package java0519;

import java.util.Arrays;

public class Solution {
    /**
     *	奇数位上都是奇数或者偶数位上都是偶数
     *	输入：数组arr，长度大于2
     *	将arr调整成奇数位上都是奇数或者偶数位上都是偶数
     */
    // 牛客网 : 奇数位位都是奇数或偶数位上都是偶数
    public static void oddInOddEvenInEven(int[] arr) {
        // 代表指向偶数位置的指针
        int point0 = 0;
        // 代表指向奇数位置的指针
        int point1 = 1;
        // 循环结束的条件是两个指针中的任意一个超过数组下标最大值
        while (!(point0 >= arr.length || point1 >= arr.length)) {
            // 偶数指针找到当前位置之后第一个偶数位不是偶数的位置
            while (arr[point0] % 2 == 0) {
                point0 += 2;
                if (point0 >= arr.length) {
                    return;
                }
            }
            // 奇数指针找到当前位置之后第一个奇数位不是奇数的位置
            while (arr[point1] % 2 != 0) {
                point1 += 2;
                if (point1 >= arr.length) {
                    return;
                }
            }
            // 交换
            int tmp = arr[point0];
            arr[point0] = arr[point1];
            arr[point1] = tmp;
            // 循环条件更新
            point0 += 2;
            point1 += 2;
        }
        return;
    }

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,0,1};
        int[] arr1 = {1,1,1,1,1,2,2,2,2,2,};
        oddInOddEvenInEven(arr1);
        System.out.println(Arrays.toString(arr1));
    }
}
